# import os, time
#
# if __name__ == "__main__":
#     for i in range(60):
#         time.sleep(1)
#         print(i, os.getpid(), os.getppid()) # getpid当前进程id，getppid当前父进程id(parent)
#
#
# """
# 在当前程序中，实际上，代码的运行流程：
# 1. pycharm调用了python解释器，
# 2. python解释器执行python模块代码
# """
import os

# module 'os' has no attribute 'fork'：window中执行会报错，只有在unix/Linux中执行不会报错
# 通过fork创建进程
if __name__ == "__main__":
    # 通过fork创建一个子进程
    w = 100
    # 创建一个子进程，fork会把父进程中的所有内存信息复制一份出来，保存到子进程中，并把fork后续的代码作为子进程要运行的代码
    pid = os.fork()  # 在子进程中pid=0，而在父进程中会pid大于0，原因是因为父进程中执行了fork，所以得到子进程的pid作为返回值
    print(f"当前进程PID：{os.getpid()}")
    if pid == 0:
        print(f"w={w}，子进程PID={os.getpid()}，当前子进程的父进程PID={os.getppid()}")
    else:
        print(f"当前进程PID：{os.getpid()}，创建了一个子进程，PID={pid}")
